


// ------------------------------------------------------------------------------------------------------
// Rule:  Start
//
// ------------------------------------------------------------------------------------------------------
struct Start : public STest::Rule<Os::Test::Task::Tester> {

    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Start();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(
            const Os::Test::Task::Tester &state //!< The test state
    );

    //! Action
    void action(
            Os::Test::Task::Tester &state //!< The test state
    );

};


// ------------------------------------------------------------------------------------------------------
// Rule:  Join
//
// ------------------------------------------------------------------------------------------------------
struct Join : public STest::Rule<Os::Test::Task::Tester> {

    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Join();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(
            const Os::Test::Task::Tester &state //!< The test state
    );

    //! Action
    void action(
            Os::Test::Task::Tester &state //!< The test state
    );

};


// ------------------------------------------------------------------------------------------------------
// Rule:  CheckState
//
// ------------------------------------------------------------------------------------------------------
struct CheckState : public STest::Rule<Os::Test::Task::Tester> {

    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    CheckState();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(
            const Os::Test::Task::Tester &state //!< The test state
    );

    //! Action
    void action(
            Os::Test::Task::Tester &state //!< The test state
    );

};


// ------------------------------------------------------------------------------------------------------
// Rule:  Delay
//
// ------------------------------------------------------------------------------------------------------
struct Delay : public STest::Rule<Os::Test::Task::Tester> {

    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Delay();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(
            const Os::Test::Task::Tester &state //!< The test state
    );

    //! Action
    void action(
            Os::Test::Task::Tester &state //!< The test state
    );

};


// ------------------------------------------------------------------------------------------------------
// Rule:  CheckTaskCount
//
// ------------------------------------------------------------------------------------------------------
struct CheckTaskCount : public STest::Rule<Os::Test::Task::Tester> {

    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    CheckTaskCount();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(
            const Os::Test::Task::Tester &state //!< The test state
    );

    //! Action
    void action(
            Os::Test::Task::Tester &state //!< The test state
    );

};

    



    // ------------------------------------------------------------------------------------------------------
    // Rule:  Registry
    //
    // ------------------------------------------------------------------------------------------------------
    struct Registry : public STest::Rule<Os::Test::Task::Tester> {

            // ----------------------------------------------------------------------
            // Construction
            // ----------------------------------------------------------------------

            //! Constructor
            Registry();

            // ----------------------------------------------------------------------
            // Public member functions
            // ----------------------------------------------------------------------

            //! Precondition
            bool precondition(
                const Os::Test::Task::Tester& state //!< The test state
            );

            //! Action
            void action(
                Os::Test::Task::Tester& state //!< The test state
            );

    };

    



    // ------------------------------------------------------------------------------------------------------
    // Rule:  JoinInvalidState
    //
    // ------------------------------------------------------------------------------------------------------
    struct JoinInvalidState : public STest::Rule<Os::Test::Task::Tester> {

            // ----------------------------------------------------------------------
            // Construction
            // ----------------------------------------------------------------------

            //! Constructor
            JoinInvalidState();

            // ----------------------------------------------------------------------
            // Public member functions
            // ----------------------------------------------------------------------

            //! Precondition
            bool precondition(
                const Os::Test::Task::Tester& state //!< The test state
            );

            //! Action
            void action(
                Os::Test::Task::Tester& state //!< The test state
            );

    };

    



    // ------------------------------------------------------------------------------------------------------
    // Rule:  StartIllegalRoutine
    //
    // ------------------------------------------------------------------------------------------------------
    struct StartIllegalRoutine : public STest::Rule<Os::Test::Task::Tester> {

            // ----------------------------------------------------------------------
            // Construction
            // ----------------------------------------------------------------------

            //! Constructor
            StartIllegalRoutine();

            // ----------------------------------------------------------------------
            // Public member functions
            // ----------------------------------------------------------------------

            //! Precondition
            bool precondition(
                const Os::Test::Task::Tester& state //!< The test state
            );

            //! Action
            void action(
                Os::Test::Task::Tester& state //!< The test state
            );

    };
